import axios from "axios"
import { getToken } from "@/composables/cookie"
import { showMessage } from "@/composables/util"
import { useUserStore } from '@/stores/user'

const instance = axios.create({ 
    baseURL: "/api", //API 的基础 URL
    timeout: 7000, //请求超时时间
})

//添加请求拦截器
instance.interceptors.request.use(function (config){
    //在发送之前处理
    const token = getToken()
    console.log('统一添加请求头中的 Token: '+ token)
    if(token){
        //添加请求头
        config.headers['Authorization'] = 'Bearer ' + token
    }
    return config
}, function (error){
    //错误请求处理
    return Promise.reject(error)
})


//添加响应拦截器
instance.interceptors.response.use(function (response){
    //状态码2xx就执行这个
    //处理响应数据
    return response.data
}, function (error){
    //状态码2xx以上执行
    //对响应错误进行处理
    let status = error.response.status
    
    if(status == 401) {
        // 退出登录
        let userStore = useUserStore()
        userStore.logout()
        // 返回状态
        location.reload()
    }

    //如果存在错误信息就打印否则使用默认的
    let errorMessage = error.response.data.message || '请求失败'
    showMessage(errorMessage, 'error')
    return Promise.reject(error)
})
export default instance;